package C6_7_RemoveAssignments2Parameters;

/**
 * 移除对参数的赋值
 */
public class RemoveAssignments2Parameters {

    /**
     * 重构前
     */
    int discount(int inputVal, int quantity, int yearToDate) {
        if (inputVal > 50)
            inputVal -= 2;
        if (quantity > 100)
            inputVal -= 1;
        if (yearToDate > 10000)
            inputVal -= 4;
        return inputVal;
    }

    /**
     * 重构后
     * 以临时变量取代对参数的赋值动作
     */
    int discount1(int inputVal, int quantity, int yearToDate) {
        int result = inputVal;
        if (inputVal > 50)
            result -= 2;
        if (quantity > 100)
            result -= 1;
        if (yearToDate > 10000)
            result -= 4;
        return result;
    }

    /**
     * 重构后
     * 以临时变量取代对参数的赋值动作
     * 还可以为参数加上关键词final，强制它遵循“不对参数赋值”
     */
    int discount2(final int inputVal, final int quantity, final int yearToDate) {
        int result = inputVal;
        if (inputVal > 50)
            result -= 2;
        if (quantity > 100)
            result -= 1;
        if (yearToDate > 10000)
            result -= 4;
        return result;
    }

}
